// 我喜欢这一版本
#include <bits/stdc++.h>
using namespace std;

int cnt[1000010];

int main() {
  int n, d;
  cin >> n >> d;
  int mx = 1e6;

  for (int i = 1; i <= n; i++) {
    int val;
    cin >> val;
    cnt[val]++;
  }

  int ans = 0;

  if (d == 0) {
    for (int i = 0; i <= mx; i++) {
      ans += (cnt[i] > 0);
    }
    cout << n - ans << endl;
    return 0;
  }
  // i是开始的位置
  for (int i = 0; i < d; i++) {
    vector<int> a(1);
    for (int j = i; j <= mx; j += d) {
      a.push_back(cnt[j]);
    }
    int k = a.size() - 1;
    vector<int> dp(k + 1, -1e8);
    dp[1] = a[1];
    if (k >= 2)
      dp[2] = max(a[1], a[2]);
    for (int j = 3; j <= k; j++) {
      dp[j] = max(dp[j - 1], dp[j - 2] + a[j]);
    }
    ans += *max_element(dp.begin() + 1, dp.end());
  }
  cout << n - ans;

  return 0;
}
